package com.czk.run;


import com.czk.utils.FileUtil;
import org.objectweb.asm.ClassWriter;

import static org.objectweb.asm.Opcodes.*;

/**
 * 生成接口
 *
 * @Author:ChenZhangKun
 * @Date: 2021/7/21 15:33
 */
public class GenerateInterface {
    public static void main(String[] args) {
        String filePath = "F:\\IdeaProjects\\asm\\target\\classes\\com\\czk\\sample\\GenerateInterface.class";
        byte[] bytes = generate();
        FileUtil.writeBytes(filePath, bytes);
    }

    private static byte[] generate() {
        // 选择2
        ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
        // 开始vistied
        cw.visit(
                V1_8, // 版本
                ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE, // 访问标识
                "com/czk/sample/GenerateInterface", // 接口名称 采用的是internal name的形式 注意:java/lang/Object形式是全限定类名的形式
                null, // 签名，跟泛型有关
                "java/lang/Object", // 父类
                null // 父接口
        );
        cw.visitEnd();
        return cw.toByteArray();
    }
}
